package demo

// serializer:json 等价实现scan 和value接口
type Userzdy struct {
	Id       int
	Name     string
	UserInfo UserInfo `gorm:"type:longtext;serializer:json" json:"user_info"`
}

type UserInfo struct {
	Likes []string `json:"likes"`
}

// Scan实现 sql.Scanner 接口 Scan将value 扫描至Jsonb
// func (j *UserInfo) Scan(value interface{}) error {
// 	bytes, ok := value.([]byte)
// 	if !ok {
// 		return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
// 	}
// 	result := UserInfo{}
// 	err := json.Unmarshal(bytes, &result)
// 	*j = result
// 	return err
// }

// Value 实现 driver.Valuer 接口 Value返回json value
// func (j UserInfo) Value() (driver.Value, error) {
// 	return json.Marshal(j)
// }

func Zdy() {
	Init()
	// DB.AutoMigrate(&Userzdy{})

	//创建
	DB.Create(&Userzdy{Name: "lby", UserInfo: UserInfo{Likes: []string{"唱", "跳", "rap"}}})

	//查询

	// var user Userzdy
	// DB.First(&user)
	// fmt.Println(user, user.UserInfo)
}
